<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        form {
            width: 500px;
            padding: 20px;
            border: 5px solid pink;
            border-radius: 15px;
            margin: 50px auto;
        }

        label {
            font-size: 20px;
        }

        label>input {
            font-size: 20px;
            padding-left: 20px;
        }

        label>p {
            height: 30px;
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
        }

        label>p>span {
            width: 30%;
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: #ccc;
            color: #fff;
        }

        label>p>span:nth-child(1).active {
            background-color: red;
        }

        label>p>span:nth-child(2).active {
            background-color: orange;
        }

        label>p>span:nth-child(3).active {
            background-color: green;
        }
    </style>
</head>

<body>

    <form>
        <label>
            密码 : <input type="text">
            <p>
                <span>弱</span>
                <span>中</span>
                <span>强</span>
            </p>
        </label>
    </form>

    <script>
        // 大小写字母  数字  特殊符号
        // 约定 
        // 弱密码 如果只有数字 或者只有字母 或者只有特殊符号  
        // 中密码  如果 包含三个中的两种  那么就是中密码  
        // 强密码  如果三个都包含  符合强密码  

        // \d   
        //[a-zA-Z] 
        // [!@#%^&]

        // if(){}
        // if(){}
        // if(){}

        //计数器 

        // 获取元素  
        // 获取输入的内容 
        // 绑定事件 input (增加或者删除一个字符都会触发 );
        // 操作属性 

        //获取元素 
        var inp = document.querySelector('input');
        var spa = document.querySelectorAll('p > span');


        //准备正则 
        var r1 = /\d/;
        var r2 = /[a-z]/i;  //忽略大小写
        var r3 = /[!@#%\^&]/;

        // 准备计数器 
        inp.oninput = function () {
            var count = 0;
            if (r1.test(inp.value)) count++;
            if (r2.test(inp.value)) count++;
            if (r3.test(inp.value)) count++;

            // 计数器 为0     没有高亮的 
            //         1      [0]的span高亮
            //         2      [1]的span高亮
            //         3      [2]的span高亮
            for(var i=0;i<spa.length;i++){
                spa[i].classList.remove('active'); // 在某一个高亮以前让所有的全部取消高亮 
                // 然后根据条件判断 让给高亮 
                // i  小于  count 
                // 0         1
                // 0 1       2
                // 0 1 2     3 

                if(i<count) {
                    spa[i].classList.add('active');
                }
            }


        }




    </script>
</body>

</html>